// pages/i/get-password.js
const auth = require('../../utils/auth.js');
const UserService = require('../../services/user.js');

Page({

    /**
     * 页面的初始数据
     */
    data: {
        password: '',
        sms: '',
        userInfo: null,
        isLoggedIn: false,
        loginReady: false,
        beautyPhone: ''
    },

    /**
     * 生命周期函数--监听页面加载
     */
    onLoad(options) {
        // 检查登录状态
        this.checkLoginStatus();
    },

    /**
     * 生命周期函数--监听页面初次渲染完成
     */
    onReady() {

    },

    /**
     * 生命周期函数--监听页面显示
     */
    onShow() {
        // 页面显示时检查登录状态
        if (this.data.loginReady) {
            this.checkLoginStatus();
        }
    },

    /**
     * 生命周期函数--监听页面隐藏
     */
    onHide() {

    },

    /**
     * 生命周期函数--监听页面卸载
     */
    onUnload() {

    },

    /**
     * 页面相关事件处理函数--监听用户下拉动作
     */
    onPullDownRefresh() {

    },

    /**
     * 页面上拉触底事件的处理函数
     */
    onReachBottom() {

    },

    /**
     * 用户点击右上角分享
     */
    onShareAppMessage() {

    },

    /**
     * 自动登录完成回调
     * 由app.js调用，当应用自动登录完成时会触发此方法
     * @param {boolean} isLoggedIn 是否已登录
     * @param {Object} userInfo 用户信息
     */
    onAutoLoginComplete(isLoggedIn, userInfo) {
        console.log('获取密码页面收到登录状态更新:', { isLoggedIn, userInfo });

        if (isLoggedIn && userInfo) {
            // 自动登录成功，检查用户信息完整性
            if (auth.isValidUserInfo(userInfo)) {
                // 用户已绑定手机号，可以正常使用页面
                this.setData({
                    isLoggedIn: true,
                    userInfo: userInfo,
                    loginReady: true
                });
            } else {
                // 用户已登录但未绑定手机号，跳转到登录页面
                wx.showModal({
                    title: '提示',
                    content: '请先绑定手机号',
                    showCancel: false,
                    success: () => {
                        wx.redirectTo({
                            url: '/pages/index/login'
                        });
                    }
                });
            }
        } else {
            // 自动登录失败，跳转到登录页面
            this.setData({
                isLoggedIn: false,
                userInfo: null,
                loginReady: true
            });

            wx.showModal({
                title: '提示',
                content: '请先登录',
                showCancel: false,
                success: () => {
                    wx.redirectTo({
                        url: '/pages/index/login'
                    });
                }
            });
        }
    },

    /**
     * 检查登录状态
     */
    async checkLoginStatus() {
        try {
            // 检查登录状态
            const loginStatus = await auth.checkLoginStatus();

            if (!loginStatus.isLoggedIn) {
                wx.showModal({
                    title: '提示',
                    content: '请先登录',
                    showCancel: false,
                    success: () => {
                        wx.redirectTo({
                            url: '/pages/index/login'
                        });
                    }
                });
                return;
            }

            // 检查用户信息完整性（是否已绑定手机号）
            const userInfo = auth.getUserInfo();
            if (!auth.isValidUserInfo(userInfo)) {
                wx.showModal({
                    title: '提示',
                    content: '请先绑定手机号',
                    showCancel: false,
                    success: () => {
                        wx.redirectTo({
                            url: '/pages/index/login'
                        });
                    }
                });
                return;
            }

            this.setData({
                isLoggedIn: true,
                userInfo: userInfo,
                loginReady: true,
                beautyPhone: userInfo.phone ? '****' + userInfo.phone.slice(-4) : '********'
            });


        } catch (error) {
            wx.showModal({
                title: '提示',
                content: '登录状态检查失败，请重试',
                showCancel: false,
                success: () => {
                    wx.redirectTo({
                        url: '/pages/index/login'
                    });
                }
            });
        }
    },
    
    /**
     * 发送验证码
     */
    async sendSmsCode() {
        try {
            const { userInfo } = this.data;

            if (!userInfo || !userInfo.phone) {
                wx.showToast({
                    title: '用户信息不完整',
                    icon: 'none'
                });
                return;
            }

            wx.showLoading({
                title: '发送中...'
            });

            // 这里应该调用发送验证码的接口
            const result = await UserService.sendCode();   

            if(result.success){
                this.setData({
                    sms: result.data
                },function(){
                    wx.hideLoading();
                    wx.showToast({
                        title: '验证码已发送',
                        icon: 'success'
                    });
                });
            }else{
                wx.showToast({
                    title: result.message,
                    icon: 'none'
                });
            }

        } catch (error) {
            wx.hideLoading();
            wx.showToast({
                title: '发送失败，请重试',
                icon: 'none'
            });
        }
    },

    /**
     * 确认按钮点击事件
     */
    async doConfirm() {
        console.log(this.data.password);

        // 验证输入
        if (!this.data.password) {
            wx.showToast({
                title: '请输入新密码',
                icon: 'none'
            });
            return;
        }

        if (!this.data.sms) {
            wx.showToast({
                title: '请输入验证码',
                icon: 'none'
            });
            return;
        }

        if (this.data.password.length !== 6 || !/^\d{6}$/.test(this.data.password)) {
            wx.showToast({
                title: '密码必须是6位数字',
                icon: 'none'
            });
            return;
        }

        try {
            wx.showLoading({
                title: '提交中...'
            });

            // 这里应该调用修改密码的接口
            const result = await UserService.changePassword({
              password: this.data.password,
              code: this.data.sms
            });

            if(result.success){
                wx.hideLoading();
                wx.showToast({
                    title: result.message,
                    icon: 'success'
                });
            }else{
                wx.showToast({
                    title: result.message,
                    icon: 'none'
                });
            }

        } catch (error) {
            wx.hideLoading();
            wx.showToast({
                title: '修改失败，请重试',
                icon: 'none'
            });
        }
    },

    /**
     * 图标点击事件
     */
    onClickIcon() {
        wx.showModal({
            title: '密码说明',
            content: '请输入6位数字密码，用于登录验证',
            showCancel: false
        });
    }
})